Read in the Data:
#finaldf <- readRDS( 'StopData_finaldf.rds' )
mergedf <- readRDS( 'StopData_merged.rds' )
Location info:
latmax <- max( mergedf$lat, na.rm = TRUE )
latmin <- min( mergedf$lat, na.rm = TRUE )
lonmax <- max( mergedf$long, na.rm = TRUE )
lonmin <- min( mergedf$long, na.rm = TRUE )
latvals <- c( latmin, latmax )
lonvals <- c( lonmin, lonmax )
Make the variables factors:
mergedf$CarSearch <- factor(mergedf$CarSearch)
levels(mergedf$CarSearch) <- c("No Search", "Search")
mergedf$Race <- factor(mergedf$Race)
levels(mergedf$Race) <- c("Asian", "Black", "Hispanic", "Other", "White")
mergedf$Enforcement <- factor(mergedf$Enforcement)
levels(mergedf$Enforcement) <- c("Arrest", "Citation", "Other", "Warning")
mergedf$Reason <- factor(mergedf$Reason)
levels(mergedf$Reason) <- c("Other", "Investigation", "Probation/Parole", "Reasonable Suscipcion", "Traffic", "Wanted")
mergedf <- mergedf %>%
mutate(Arrest = ifelse(
as.character(Enforcement) == "Arrest",
"Arrested",
"Not Arrested") ) %>%
mutate(Arrest = factor(Arrest))
v <- factor(mergedf$Other)
levels(v)
## [1] "" "00000" "AR" "AR, M" "AR, M, P"
## [6] "AR, P" "FC" "FC, M" "IN" "M"
## [11] "M, P" "MH" "MH, AR, P" "MH, M" "MH, P"
## [16] "P" "TOW" "TOW," "TOW, AR" "TOW, AR, M"
## [21] "TOW, AR, P" "TOW, CO, P" "TOW, FC" "TOW, IN" "TOW, IN, AR"
## [26] "TOW, M" "TOW, P"
mergedf <- mergedf %>%
mutate(Emergency.Psych.Eval = ifelse( str_detect(as.character(Other), "MH"),
yes = "Yes",
no = "No") )
mergedf$Emergency.Psych.Eval <- factor(mergedf$Emergency.Psych.Eval)
Map 1
newmap <- getMap( resolution="low" )
plot( newmap, xlim = lonvals, ylim = latvals, asp=1 )
points( mergedf$long, mergedf$lat, col="red", cex=.6 )

Map 2
berkMap = map = get_map(location = c( lon = mean(lonvals), lat = mean(latvals) ), zoom = 14)
## Warning in download.file(url, destfile = tmp, quiet = !messaging, mode =
## "wb"): downloaded length 584026 != reported length 584026
## Map from URL : http://maps.googleapis.com/maps/api/staticmap?center=37.865887,-122.276384&zoom=14&size=640x640&scale=2&maptype=terrain&language=en-EN&sensor=false
ggmap(berkMap) +
geom_point(aes(x = long, y = lat, color = Incident.Type), data = mergedf, alpha = 0.2, size = 3) +
scale_colour_discrete( "Incident Type", labels = c("Pedestrian Stop", "Bicycle Stop", "Suspicious Vehicle Stop", "Traffic Stop" ) ) +
theme (
#legend.position = c(0.05, 0.05), # put the legend INSIDE the plot area
#legend.justification = c(0, 0),
#legend.background = element_rect(colour = F, fill = "white"),
#legend.key = element_rect (fill = F, colour = F),
panel.grid.major = element_blank (), # remove major grid
panel.grid.minor = element_blank (), # remove minor grid
axis.text = element_blank (),
axis.title = element_blank (),
axis.ticks = element_blank ()
) +
ggtitle("All BPD Stops by Incident Type, 2015-2016")
## Warning: Removed 933 rows containing missing values (geom_point).

MAP 2.1
ggmap(berkMap) +
geom_point(aes(x = long, y = lat, size = CarSearch, color = Race), data = mergedf, alpha = 0.2) +
scale_size_discrete( "Car Search", labels = c("No Search", "Search") ) +
theme (
panel.grid.major = element_blank (), # remove major grid
panel.grid.minor = element_blank (), # remove minor grid
axis.text = element_blank (),
axis.title = element_blank (),
axis.ticks = element_blank ()
) +
ggtitle("BPD All Stops w/ Car Searches by Race 2015-2016") +
facet_wrap(~ Race, ncol = 3 )
## Warning: Using size for a discrete variable is not advised.
## Warning: Removed 933 rows containing missing values (geom_point).

MAP 2.2
df <- subset(mergedf, as.character(Enforcement) == "Arrest")
ggmap(berkMap) +
geom_point(aes(x = long, y = lat, colour = Race), data = df, alpha = 0.5, size = 5) +
theme (
panel.grid.major = element_blank (), # remove major grid
panel.grid.minor = element_blank (), # remove minor grid
axis.text = element_blank (),
axis.title = element_blank (),
axis.ticks = element_blank ()
) +
ggtitle("BPD Stops to Arrests, by Race 2015-2016") +
facet_wrap(~ Race)
## Warning: Removed 29 rows containing missing values (geom_point).

MAP 2.3
ggmap(berkMap) +
geom_point(aes(x = long, y = lat, colour = Race, size = Arrest), data = mergedf, alpha = 0.5) +
scale_size_discrete( range = c(7, 3) ) +
theme (
panel.grid.major = element_blank (), # remove major grid
panel.grid.minor = element_blank (), # remove minor grid
axis.text = element_blank (),
axis.title = element_blank (),
axis.ticks = element_blank ()
) +
ggtitle("BPD Stops to Arrests, by Race 2015-2016") +
facet_wrap(~ Race)
## Warning: Using size for a discrete variable is not advised.
## Warning: Removed 933 rows containing missing values (geom_point).

# p <- sum(as.character(mergedf$Arrest) == "Arrested")/nrow(Arrest)
#
# print( str_c( Percent of People Arrested Out of Total People Stopped: ), )
MAP 2.4
df <- subset(mergedf, as.character(Emergency.Psych.Eval) == "Yes")
ggmap(berkMap) +
geom_point(aes(x = long, y = lat, colour = Race), data = df, alpha = 0.5, size = 6) +
theme (
panel.grid.major = element_blank (), # remove major grid
panel.grid.minor = element_blank (), # remove minor grid
axis.text = element_blank (),
axis.title = element_blank (),
axis.ticks = element_blank ()
) +
ggtitle("BPD Stops with Emergency Psch Evaluation, by Race 2015-2016")
## Warning: Removed 1 rows containing missing values (geom_point).
